-- H2 数据库中没有存储过程和 sql 用户定义函数，而是我们使用 java 方法并创建别名来引用它。我们可以使用别名调用该方法。

-- 创建一个函数，计算两个数的和
DROP ALIAS IF EXISTS addNumbers;
CREATE ALIAS addNumbers AS $$
    int addNumbers(int a, int b) {
        return a + b;
}
$$;

-- 调用这个函数
-- SELECT addNumbers(5, 3);


-- 创建一个存储过程
DROP ALIAS IF EXISTS addNumbersProcedure;
CREATE ALIAS addNumbersProcedure AS $$
    void addNumbersProcedure(int a, int b, java.sql.ResultSet[] out) throws java.sql.SQLException {
        java.sql.Connection conn = java.sql.DriverManager.getConnection("jdbc:h2:~/mydb", "root", "test");
        java.sql.PreparedStatement prep = conn.prepareStatement("SELECT ? + ?");
        prep.setInt(1, a);
        prep.setInt(2, b);
        out[0] = prep.executeQuery();
}
$$;

-- 调用存储过程
-- CALL addNumbersProcedure(5, 3, ?);


DROP ALIAS IF EXISTS MYFUNCTION;
CREATE ALIAS MYFUNCTION AS $$
String getTableContent(java.sql.Connection con) throws Exception {
    String resultValue=null;
    java.sql.ResultSet rs = con.createStatement().executeQuery(
    " SELECT * FROM TB_USER");
       while(rs.next())
       {
        resultValue=rs.getString(1);
}
    return resultValue;
}
$$;

